#include <tlpr/tlnetdb.h>

TL_IMPLEMENT(TLUint16) TL_ntohs(TLUint16 n) { return ntohs(n); }
TL_IMPLEMENT(TLUint32) TL_ntohl(TLUint32 n) { return ntohl(n); }
TL_IMPLEMENT(TLUint16) TL_htons(TLUint16 n) { return htons(n); }
TL_IMPLEMENT(TLUint32) TL_htonl(TLUint32 n) { return htonl(n); }
TL_IMPLEMENT(TLUint64) TL_ntohll(TLUint64 n)
{
#ifdef IS_BIG_ENDIAN
    return n;
#else
    TLUint64 tmp;
    TLUint32 hi, lo;
    LL_L2UI(lo, n);
    LL_SHR(tmp, n, 32);
    LL_L2UI(hi, tmp);
    hi = TL_ntohl(hi);
    lo = TL_ntohl(lo);
    LL_UI2L(n, lo);
    LL_SHL(n, n, 32);
    LL_UI2L(tmp, hi);
    LL_ADD(n, n, tmp);
    return n;
#endif
}  /* ntohll */

TL_IMPLEMENT(TLUint64) TL_htonll(TLUint64 n)
{
#ifdef IS_BIG_ENDIAN
    return n;
#else
    TLUint64 tmp;
    TLUint32 hi, lo;
    LL_L2UI(lo, n);
    LL_SHR(tmp, n, 32);
    LL_L2UI(hi, tmp);
    hi = htonl(hi);
    lo = htonl(lo);
    LL_UI2L(n, lo);
    LL_SHL(n, n, 32);
    LL_UI2L(tmp, hi);
    LL_ADD(n, n, tmp);
    return n;
#endif
}  /* htonll */

